Spring ORM এবং REST API Integration এমন একটি প্রযুক্তিগত সমাধান, যা Spring Framework ব্যবহার করে ডাটাবেস সংক্রান্ত কার্যাবলী এবং HTTP প্রোটোকলের মাধ্যমে ক্লায়েন্টের সঙ্গে যোগাযোগের জন্য ব্যবহৃত হয়। এই সমাধানটি Spring ORM এর শক্তিশালী ডাটাবেস ব্যবস্থাপনা ক্ষমতাকে RESTful API এর মাধ্যমে এক্সপোজ করে, যাতে ক্লায়েন্ট বা ফ্রন্টএন্ড অ্যাপ্লিকেশন ডেটার সঙ্গে সহজে ইন্টারঅ্যাক্ট করতে পারে।
ধরা যাক, আমাদের একটি Product
মডেল এবং একটি ProductRepository
তৈরি করতে হবে, যার মাধ্যমে Spring ORM ডাটাবেস থেকে ডেটা রিট্রিভ এবং ম্যানেজ করবে। এর পর, REST API তৈরি করে ডেটা ক্লায়েন্টের কাছে এক্সপোজ করা হবে।
pom.xml
ফাইলে প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Product
নামক একটি Entity তৈরি করুন, যা id
, name
, এবং price
ফিল্ডের সাথে একটি ডাটাবেস টেবিলের ম্যাপিং করবে।
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Spring Data JPA ব্যবহার করে ProductRepository
তৈরি করুন, যা ডাটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন করবে।
package com.example.demo.repository;
import com.example.demo.entity.Product;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
}
Service Layer তৈরি করুন যা ডাটাবেস থেকে ডেটা পরিচালনা করবে এবং REST API এর মাধ্যমে এক্সপোজ করবে।
package com.example.demo.service;
import com.example.demo.entity.Product;
import com.example.demo.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Product getProductById(Long id) {
return productRepository.findById(id).orElse(null);
}
public Product createProduct(Product product) {
return productRepository.save(product);
}
public Product updateProduct(Long id, Product product) {
if (productRepository.existsById(id)) {
product.setId(id);
return productRepository.save(product);
}
return null;
}
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
REST API তৈরি করতে একটি Controller তৈরি করুন, যা HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে Service Layer এর মেথডগুলো কল করবে।
package com.example.demo.controller;
import com.example.demo.entity.Product;
import com.example.demo.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/products")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
return productService.getProductById(id);
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(product);
}
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
return productService.updateProduct(id, product);
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
}
Spring Boot অ্যাপ্লিকেশন চালাতে @SpringBootApplication
অ্যানোটেশনসহ একটি Main ক্লাস তৈরি করুন।
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
application.properties
ফাইলে ডাটাবেস কনফিগারেশন দিন (এখানে H2 ডাটাবেস ব্যবহার করা হয়েছে):
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true
http://localhost:8080/api/products
এটি সমস্ত প্রোডাক্ট ফিরিয়ে দেবে।http://localhost:8080/api/products/{id}
এটি নির্দিষ্ট Product
কে ফিরিয়ে দেবে।POST API: URL: http://localhost:8080/api/products
Body (JSON):
{
"name": "Laptop",
"price": 1000.00
}
PUT API: URL: http://localhost:8080/api/products/{id}
Body (JSON):
{
"name": "Gaming Laptop",
"price": 1200.00
}
http://localhost:8080/api/products/{id}
Spring ORM এবং REST API Integration ডাটাবেস অপারেশন এবং HTTP সার্ভিস এক্সপোজ করার জন্য শক্তিশালী একটি সমাধান। Spring ORM ডাটাবেস সম্পর্কিত কার্যাবলী পরিচালনা করে, এবং REST API সেই ডেটা ক্লায়েন্টের কাছে সহজে পৌঁছানোর উপায় দেয়। এই সমাধানটি মডেল-ভিউ-কন্ট্রোলার (MVC) আর্কিটেকচার ব্যবহার করে, যাতে ফ্রন্টএন্ড এবং ব্যাকএন্ডের মধ্যে মসৃণ যোগাযোগ নিশ্চিত হয়।
Spring Data JPA হল Spring Framework-এর একটি অত্যন্ত শক্তিশালী মডিউল, যা JPA (Java Persistence API) ব্যবহার করে ডেটাবেস অপারেশন সহজ করে। Spring Data JPA, Spring Boot-এর সঙ্গে মিলে দ্রুত এবং কার্যকরভাবে RESTful API তৈরি করতে সাহায্য করে।
এখানে আমরা একটি সাধারণ Spring Data JPA অ্যাপ্লিকেশন তৈরি করব এবং একটি REST API তৈরি করব, যা ডেটাবেস থেকে তথ্য এনে ক্লায়েন্টকে রেসপন্স করবে।
Spring Boot প্রজেক্ট তৈরি করতে, Spring Initializr ব্যবহার করুন (https://start.spring.io/)। এখানে কিছু প্রাথমিক ডিপেন্ডেন্সি নির্বাচন করতে হবে:
Spring Boot প্রজেক্টে ডিপেন্ডেন্সি যোগ করা যেটি আপনার pom.xml
ফাইলে থাকবে।
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
application.properties
ফাইলে ডাটাবেস কনফিগারেশন সেট করতে হবে। এখানে H2 ডাটাবেসের কনফিগারেশন দেওয়া হলো:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
এটি H2 ডাটাবেসে কাজ করবে এবং অ্যাপ্লিকেশন রান করার সময় ডাটাবেসের কনসোল দেখতে পারবেন।
JPA Entity ক্লাস তৈরি করতে হবে, যা ডাটাবেস টেবিলের সঙ্গে সম্পর্ক স্থাপন করবে। উদাহরণস্বরূপ, একটি Product
Entity তৈরি করা:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Double price;
// Getters and Setters
}
এখানে @Entity
অ্যানোটেশন ডেটাবেস টেবিলের জন্য Entity ক্লাসকে নির্দেশ করে এবং @Id
হল Primary Key।
Spring Data JPA এর সাহায্যে ডেটাবেস অপারেশন সহজ করতে JpaRepository ইন্টারফেস ব্যবহার করা হয়। এটি CRUD (Create, Read, Update, Delete) অপারেশনগুলো অ্যাক্সেস করতে সাহায্য করবে।
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// Custom query methods (if any) can be added here
}
এটি Product
Entity এর জন্য ডেটাবেস অপারেশন সমর্থন করবে।
REST API-এর business logic সম্পাদন করতে একটি Service Layer তৈরি করা হয়। এখানে ProductService
ক্লাসটি তৈরি করা হবে, যা ডেটাবেস থেকে তথ্য নিয়ে আসবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Product getProductById(Long id) {
return productRepository.findById(id).orElse(null);
}
public Product createProduct(Product product) {
return productRepository.save(product);
}
public Product updateProduct(Long id, Product product) {
product.setId(id);
return productRepository.save(product);
}
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
RESTful API তৈরি করার জন্য Controller তৈরি করা হয়, যা HTTP রিকোয়েস্ট গ্রহণ করে এবং সঠিক সাড়া পাঠায়।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/products")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
return productService.getProductById(id);
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(product);
}
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
return productService.updateProduct(id, product);
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
}
এখানে @RestController
অ্যানোটেশনটি API Controller-কে নির্দেশ করে এবং HTTP মেথডের মতো @GetMapping
, @PostMapping
, @PutMapping
, @DeleteMapping
ব্যবহার করা হয় রিকোয়েস্ট গুলোকে ম্যানেজ করতে।
Spring Boot অ্যাপ্লিকেশন চালানোর জন্য, @SpringBootApplication
অ্যানোটেশন ব্যবহার করা হয়:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
এটি Spring Boot অ্যাপ্লিকেশন চালু করবে এবং আপনি API রিকোয়েস্ট পাঠাতে পারবেন।
এখন, আপনি Spring Data JPA ব্যবহার করে একটি পূর্ণ REST API তৈরি করতে সক্ষম হয়েছেন, যেখানে:
Product
Entity ডেটাবেস টেবিলের সঙ্গে সম্পর্কিত।ProductRepository
Spring Data JPA এর সাহায্যে CRUD অপারেশন পরিচালনা করে।ProductService
business logic সম্পাদন করে।ProductController
API endpoints পরিচালনা করে।এই REST API অন্যান্য ক্লায়েন্ট (যেমন Angular, React বা Postman) দ্বারা ব্যবহার করা যেতে পারে ডেটা পেতে বা ডেটা পাঠাতে।
Spring ORM ব্যবহার করে Java প্রযুক্তিতে ডেটাবেস অপারেশন (CRUD) এবং Pagination বা পেজিনেশন বাস্তবায়ন করা খুবই সহজ। Spring Data JPA এ CrudRepository
বা JpaRepository
ব্যবহার করে CRUD অপারেশন এবং ডেটা সঠিকভাবে পেজিনেট করা যায়। RESTful API তে CRUD এবং Pagination সহ কার্যক্রম তৈরি করা হয় যাতে ক্লায়েন্ট সহজে ডেটা অ্যাক্সেস এবং পরিচালনা করতে পারে।
CRUD অপারেশন (Create, Read, Update, Delete) মূলত ডেটাবেসে ডেটা সংরক্ষণ, আপডেট, রিট্রিভ এবং মুছে ফেলার কাজ করে। Spring Data JPA এর মাধ্যমে এগুলির বাস্তবায়ন খুবই সরল এবং স্বয়ংক্রিয়। নিচে এর বিস্তারিত ব্যাখ্যা দেওয়া হলো।
এটি ডেটাবেসে নতুন রেকর্ড তৈরি করতে ব্যবহৃত হয়।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(product);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public Product createProduct(Product product) {
return productRepository.save(product); // Save to DB
}
}
এটি ডেটাবেস থেকে ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়।
@GetMapping("/{id}")
public Product getProduct(@PathVariable Long id) {
return productService.getProductById(id);
}
public Product getProductById(Long id) {
return productRepository.findById(id).orElseThrow(() -> new RuntimeException("Product not found"));
}
এটি ডেটাবেসে বিদ্যমান রেকর্ড আপডেট করার জন্য ব্যবহৃত হয়।
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product updatedProduct) {
return productService.updateProduct(id, updatedProduct);
}
public Product updateProduct(Long id, Product updatedProduct) {
Product existingProduct = productRepository.findById(id).orElseThrow(() -> new RuntimeException("Product not found"));
existingProduct.setName(updatedProduct.getName());
existingProduct.setPrice(updatedProduct.getPrice());
return productRepository.save(existingProduct);
}
এটি ডেটাবেস থেকে রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়।
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
Pagination RESTful API-তে ডেটা বড় পরিসরে প্রক্রিয়াকরণ এবং প্রদর্শন করতে ব্যবহৃত হয়। Spring Data JPA সহজেই pagination সাপোর্ট করে। এটি Pageable
এবং Page
অবজেক্ট ব্যবহার করে কার্যকরীভাবে ডেটা পেজিনেট করতে সক্ষম।
@GetMapping
public Page<Product> getAllProducts(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
return productService.getProductsWithPagination(page, size);
}
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public Page<Product> getProductsWithPagination(int page, int size) {
Pageable pageable = PageRequest.of(page, size);
return productRepository.findAll(pageable);
}
}
Pageable
সমর্থনকারী রেপোজিটরি মেথড ব্যবহার করা হয়:
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// JpaRepository already supports pagination
}
Pagination-এর মাধ্যমে ডেটা রিটার্ন করার পর, সাধারণত এটি একটি Page
অবজেক্টে রিটার্ন হয়, যা পরবর্তী পেজের জন্য প্রয়োজনীয় তথ্য (যেমন total pages, total elements) প্রদান করে।
{
"content": [
{
"id": 1,
"name": "Product 1",
"price": 100
},
{
"id": 2,
"name": "Product 2",
"price": 150
}
],
"totalElements": 20,
"totalPages": 2,
"size": 10,
"number": 0
}
ফিচার | CRUD অপারেশন | Pagination |
---|---|---|
ডেটা পরিচালনা | নতুন ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলার জন্য ব্যবহৃত। | বড় পরিসরের ডেটা ভাগ করে দেখানো, পেজিনেটেড আউটপুট। |
প্রসেসিং স্পিড | দ্রুত, ছোট পরিসরের ডেটা পরিচালনার জন্য উপযুক্ত। | বড় পরিসরের ডেটা ব্যবস্থাপনা এবং ব্রাউজিং সুবিধা। |
পারফরম্যান্স | ছোট ডেটাবেসের জন্য উপযুক্ত। | বড় ডেটাবেসের ক্ষেত্রে পারফরম্যান্স উন্নত হয়। |
Spring ORM ব্যবহার করে CRUD অপারেশন এবং Pagination বাস্তবায়ন খুবই সহজ, যেখানে ডেটাবেস পরিচালনা ও পেজিনেটেড ডেটার রিটার্ন করা যায়। Spring Data JPA দিয়ে এই কাজগুলো অত্যন্ত সহজ, এবং RESTful API তে সেগুলি কার্যকরভাবে কাজে লাগানো সম্ভব।
Spring ORM এবং REST API Integration হল একটি সাধারণ কৌশল যেখানে Spring ORM (Object-Relational Mapping) ব্যবহার করে ডাটাবেস অপারেশন এবং REST API-এর মাধ্যমে ক্লায়েন্ট-সার্ভারের যোগাযোগ সম্পন্ন করা হয়। এই পদ্ধতি ব্যবহার করে, Spring Framework ডাটাবেসের ডেটা RESTful Web Service API এর মাধ্যমে ক্লায়েন্টের কাছে পৌঁছাতে সাহায্য করে।
Spring ORM ব্যবহার করে Entity Mapping ও CRUD Operations সম্পাদন করা হয়, এবং Spring Web (Spring MVC) ব্যবহার করে সেই ডেটা REST API-এর মাধ্যমে ক্লায়েন্টের কাছে পাঠানো হয়।
এখানে আমরা একটি Product Entity তৈরি করবো, যা ডাটাবেস টেবিলের প্রতিনিধিত্ব করবে। এই Entity ক্লাসে ORM ম্যাপিং কনফিগারেশন দেওয়া হয়েছে।
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// Getter এবং Setter
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
এখানে, @Entity
অ্যানোটেশন ব্যবহার করে Product ক্লাসকে ডাটাবেস টেবিলের সাথে ম্যাপ করা হয়েছে, এবং @Id
এবং @GeneratedValue
ব্যবহার করে প্রাইমারি কী সঠিকভাবে কনফিগার করা হয়েছে।
Spring Data JPA ব্যবহার করে Product Entity-এর জন্য একটি Repository তৈরি করা হবে, যা ডাটাবেস অপারেশন পরিচালনা করবে। এই Repository ক্লাসটি JpaRepository
এক্সটেন্ড করে ডিফল্ট CRUD অপারেশনগুলো কার্যকর করবে।
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// custom query methods can be added here
}
এখানে JpaRepository<Product, Long>
ব্যবহার করা হয়েছে, যা Product Entity-র জন্য CRUD অপারেশন অটোমেটিকভাবে প্রদান করে।
ProductService ক্লাসটি ProductRepository কে ইনজেক্ট করে ডাটাবেসের CRUD অপারেশনগুলো পরিচালনা করবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Optional<Product> getProductById(Long id) {
return productRepository.findById(id);
}
public Product createProduct(Product product) {
return productRepository.save(product);
}
public Product updateProduct(Long id, Product product) {
if (productRepository.existsById(id)) {
product.setId(id);
return productRepository.save(product);
} else {
return null;
}
}
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
এখানে ProductService
ক্লাসের মাধ্যমে ডাটাবেসের CRUD অপারেশনগুলো পরিচালনা করা হয়েছে, যেমন: getAllProducts(), getProductById(), createProduct(), updateProduct(), এবং deleteProduct()।
ProductController ক্লাসটি REST API তৈরি করবে, যা ProductService ক্লাসের মেথডগুলোকে HTTP রিকোয়েস্টের মাধ্যমে এক্সপোজ করবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/products")
public class ProductController {
@Autowired
private ProductService productService;
// Get all products
@GetMapping
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
// Get product by id
@GetMapping("/{id}")
public ResponseEntity<Product> getProductById(@PathVariable Long id) {
Optional<Product> product = productService.getProductById(id);
return product.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).build());
}
// Create a new product
@PostMapping
public ResponseEntity<Product> createProduct(@RequestBody Product product) {
Product createdProduct = productService.createProduct(product);
return ResponseEntity.status(HttpStatus.CREATED).body(createdProduct);
}
// Update an existing product
@PutMapping("/{id}")
public ResponseEntity<Product> updateProduct(@PathVariable Long id, @RequestBody Product product) {
Product updatedProduct = productService.updateProduct(id, product);
return updatedProduct != null ? ResponseEntity.ok(updatedProduct)
: ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
// Delete a product
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
}
এখানে, ProductController ক্লাসে বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে CRUD অপারেশন REST API হিসেবে তৈরি করা হয়েছে।
API পরীক্ষা করার জন্য, Postman বা যেকোনো HTTP ক্লায়েন্ট টুল ব্যবহার করতে পারেন।
GET
http://localhost:8080/api/products
POST
http://localhost:8080/api/products
Body:
{
"name": "Smartphone",
"price": 20000
}
Spring ORM এবং REST API Integration-এর মাধ্যমে আপনি ডাটাবেস অপারেশন এবং RESTful Web Services-এর সাহায্যে ডেটা ক্লায়েন্টের কাছে পৌঁছাতে পারেন। Spring ORM (Hibernate) ব্যবহার করে ডাটাবেসের CRUD অপারেশনগুলো বাস্তবায়ন করা হয়, এবং Spring MVC ব্যবহার করে সেই ডেটা RESTful API-এর মাধ্যমে ক্লায়েন্টের কাছে এক্সপোজ করা হয়। এই ধরনের Integration সিস্টেমের স্থিতিশীলতা এবং স্কেলেবিলিটি বৃদ্ধি করতে সাহায্য করে।
Read more